﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MacroprocesosWinForms.Administrador.DialogBox
{
    public partial class Dialog_BuscarDocumento : Form
    {
        private Unimaq.Macroprocesos.AccesoDatos.Documento selectedDocumento;

        public Unimaq.Macroprocesos.AccesoDatos.Documento SelectedDocumento
        {
            get { return selectedDocumento; }
            set { selectedDocumento = value; }
        }

        public Dialog_BuscarDocumento()
        {
            InitializeComponent();
        }

        private void LoadComboTipoDocumento()
        {
            Unimaq.Macroprocesos.LogicaNegocio.TipoDocumentoBLL tipoDocumentoBLL = new Unimaq.Macroprocesos.LogicaNegocio.TipoDocumentoBLL();
            cmbTipoDocumento.DataSource = tipoDocumentoBLL.Listar();
            cmbTipoDocumento.ValueMember = "Id";
            cmbTipoDocumento.DisplayMember = "Codigo";
            cmbTipoDocumento.SelectedIndex = -1;
        }

        private void rbCodigo_CheckedChanged(object sender, EventArgs e)
        {
            txtSubCodigo.ResetText();

            if (rbCodigo.Checked)
            {
                txtSubCodigo.Enabled = true;
                LoadComboTipoDocumento();
            }
            else
            {
                txtSubCodigo.Enabled = false;
                cmbTipoDocumento.Enabled = false;
            }
        }

        private void rbNombre_CheckedChanged(object sender, EventArgs e)
        {
            txtNombreProceso.ResetText();

            if (rbNombre.Checked)
                txtNombreProceso.Enabled = true;
            else
                txtNombreProceso.Enabled = false;
        }

        private void Dialog_BuscarDocumento_Load(object sender, EventArgs e)
        {
            LoadComboTipoDocumento();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
		    List<Unimaq.Macroprocesos.AccesoDatos.Documento> lista = new List<Unimaq.Macroprocesos.AccesoDatos.Documento>();
            Unimaq.Macroprocesos.LogicaNegocio.DocumentoBLL documentoBLL = new Unimaq.Macroprocesos.LogicaNegocio.DocumentoBLL();

            if (rbCodigo.Checked)
            {
                if (cmbTipoDocumento.SelectedIndex >= 0)
                {
                    lista = documentoBLL.Buscar("codigo", string.Format("{0}-{1}", (cmbTipoDocumento.SelectedItem as Unimaq.Macroprocesos.AccesoDatos.TipoDocumento).Codigo, txtSubCodigo.Text.Trim()));                   
                }
            }
            else if (rbNombre.Checked)
            {
                lista = documentoBLL.Buscar("nombre", txtNombreProceso.Text.Trim());
            }

            gridBuscarDocumento.DataSource = lista;
        }

        private void gridBuscarProceso_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridBuscarDocumento.DataSource != null)
            {
                gridBuscarDocumento.Columns["Id"].Visible = false;
                gridBuscarDocumento.Columns["IdProceso"].Visible = false;
                gridBuscarDocumento.Columns["IdTipoDocumento"].Visible = false;
                gridBuscarDocumento.Columns["Codigo"].HeaderText = "Código";
                gridBuscarDocumento.Columns["Nombre"].HeaderText = "Documento";
                gridBuscarDocumento.Columns["NumeroDocumento"].Visible = false;
                gridBuscarDocumento.Columns["RutaAcceso"].Visible = false;
                gridBuscarDocumento.Columns["TipoDocumento"].Visible = false;
                gridBuscarDocumento.Columns["Proceso"].Visible = false;
            }
        }

        private void gridBuscarDocumento_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex >= 0 && e.Button == MouseButtons.Left)
            {
                Unimaq.Macroprocesos.AccesoDatos.Documento selDocumento =
                    gridBuscarDocumento.Rows[e.RowIndex].DataBoundItem as Unimaq.Macroprocesos.AccesoDatos.Documento;

                if (selDocumento != null)
                {
                    SelectedDocumento = selDocumento;
                    this.DialogResult = DialogResult.OK;
                    this.Close();
                }
            }
        }
    }
}
